package main

import "fmt"

// map的的赋值不会拷贝
func map1() {
	var map1 = map[int]string{1: "myc", 2: "djr"}
	fmt.Printf("%p\n", &map1)

	map2 := map1
	fmt.Printf("%p\n", &map2)

	map2[1] = "mycccccccc"
	fmt.Println(map1, map2)
}

// 获取map长度
func L1() {
	var map1 = map[int]string{1: "name", 2: "name2"}
	// 获取map里面有多少键值对
	fmt.Println(len(map1))

	// 使用make初始化10个默认值， 但实际值有两个， 长度还是两个
	var map2 = make(map[int]string, 10)
	map2[1] = "name"
	map2[2] = "name2"
	fmt.Println(len(map2))
}

// map循环
func L2() {
	var map1 = map[int]string{1: "name", 2: "name2"}
	for key, value := range map1 {
		fmt.Println(key, value)
	}
}

// map的增删改查

func L3() {
	var map1 = map[int]string{1: "name", 2: "name2"}
	// 增加
	map1[3] = "name3"
	// 修改
	map1[3] = "name3-change"
	// 删除
	delete(map1, 1)
	// 获取值
	for _, value := range map1 {
		fmt.Println(value)
	}

}
